package com.eduagent.xwqeduagent.api.CreativePosterGeneration.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 创意海报生成任务查询响应类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetPosterTaskResponse {

    /**
     * 请求唯一标识
     */
    @JsonProperty("request_id")
    private String requestId;

    /**
     * 输出信息
     */
    private Output output;

    /**
     * 使用统计
     */
    private Usage usage;

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Output {
        /**
         * 任务ID
         */
        @JsonProperty("task_id")
        private String taskId;

        /**
         * 任务状态
         * PENDING：任务排队中
         * RUNNING：任务处理中
         * SUCCEEDED：任务执行成功
         * FAILED：任务执行失败
         * CANCELED：任务取消成功
         * SUSPENDED：挂起
         * UNKNOWN：任务不存在或状态未知
         */
        @JsonProperty("task_status")
        private String taskStatus;

        /**
         * 提交时间，格式：YYYY-MM-DD HH:mm:ss.SSS
         */
        @JsonProperty("submit_time")
        private String submitTime;

        /**
         * 调度时间，格式：YYYY-MM-DD HH:mm:ss.SSS
         */
        @JsonProperty("scheduled_time")
        private String scheduledTime;

        /**
         * 结束时间，格式：YYYY-MM-DD HH:mm:ss.SSS
         */
        @JsonProperty("end_time")
        private String endTime;

        /**
         * 海报图像URL列表，有效时限为24小时
         * 当generate_mode=generate时，返回1～4张海报图像的URL列表
         * 当generate_mode=sr或者generate_mode=hrf时，返回1张海报图像的URL
         */
        @JsonProperty("render_urls")
        private List<String> renderUrls;

        /**
         * 高清修复和提升分辨率的辅助参数，与render_urls列表的URL一一对应
         * 有效时限为24小时
         */
        @JsonProperty("auxiliary_parameters")
        private List<String> auxiliaryParameters;
        
        /**
         * 不含文字的海报背景图URL，有效时限为24小时
         * 当generate_mode=generate时，返回1～4张海报图像的URL列表
         * 当generate_mode=sr或者generate_mode=hrf时，返回1张海报图像的URL
         */
        @JsonProperty("bg_urls")
        private List<String> bgUrls;

        /**
         * 任务结果统计
         */
        @JsonProperty("task_metrics")
        private TaskMetrics taskMetrics;

        /**
         * 接口错误码，接口成功请求不会返回此参数
         */
        private String code;

        /**
         * 接口错误信息，接口成功请求不会返回此参数
         */
        private String message;
    }

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class TaskMetrics {
        /**
         * 总任务数
         */
        private Integer TOTAL;

        /**
         * 成功的任务数
         */
        private Integer SUCCEEDED;

        /**
         * 失败的任务数
         */
        private Integer FAILED;
    }

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Usage {
        /**
         * 生成图片的数量
         */
        @JsonProperty("image_count")
        private Integer imageCount;
    }
} 